package model;

import java.io.Serializable;

import java.math.BigDecimal;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@NamedQueries( { @NamedQuery(name = "DetalleMantencion.findAll", query = "select o from DetalleMantencion o") })
@Table(name = "DETALLE_MANTENCION")
public class DetalleMantencion implements Serializable {
    @Column(nullable = false, length = 400)
    private String descripcion;
    @Id
    @Column(name = "ID_DET_MANTENCION", nullable = false)
    private BigDecimal idDetMantencion;
    private BigDecimal valor;
    @OneToMany(mappedBy = "detalleMantencion")
    private List<ServMantenExterna> servMantenExternaList;
    @ManyToOne
    @JoinColumn(name = "RUT_ESP")
    private Especialista especialista;
    @OneToMany(mappedBy = "detalleMantencion1")
    private List<InsumoMantencion> insumoMantencionList1;
    @ManyToOne
    @JoinColumn(name = "FOLIO_MANTENCION")
    private Mantencion mantencion;

    public DetalleMantencion() {
    }

    public DetalleMantencion(String descripcion, Mantencion mantencion, BigDecimal idDetMantencion,
                             Especialista especialista, BigDecimal valor) {
        this.descripcion = descripcion;
        this.mantencion = mantencion;
        this.idDetMantencion = idDetMantencion;
        this.especialista = especialista;
        this.valor = valor;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }


    public BigDecimal getIdDetMantencion() {
        return idDetMantencion;
    }

    public void setIdDetMantencion(BigDecimal idDetMantencion) {
        this.idDetMantencion = idDetMantencion;
    }


    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public List<ServMantenExterna> getServMantenExternaList() {
        return servMantenExternaList;
    }

    public void setServMantenExternaList(List<ServMantenExterna> servMantenExternaList) {
        this.servMantenExternaList = servMantenExternaList;
    }

    public ServMantenExterna addServMantenExterna(ServMantenExterna servMantenExterna) {
        getServMantenExternaList().add(servMantenExterna);
        servMantenExterna.setDetalleMantencion(this);
        return servMantenExterna;
    }

    public ServMantenExterna removeServMantenExterna(ServMantenExterna servMantenExterna) {
        getServMantenExternaList().remove(servMantenExterna);
        servMantenExterna.setDetalleMantencion(null);
        return servMantenExterna;
    }

    public Especialista getEspecialista() {
        return especialista;
    }

    public void setEspecialista(Especialista especialista) {
        this.especialista = especialista;
    }

    public List<InsumoMantencion> getInsumoMantencionList1() {
        return insumoMantencionList1;
    }

    public void setInsumoMantencionList1(List<InsumoMantencion> insumoMantencionList1) {
        this.insumoMantencionList1 = insumoMantencionList1;
    }

    public InsumoMantencion addInsumoMantencion(InsumoMantencion insumoMantencion) {
        getInsumoMantencionList1().add(insumoMantencion);
        insumoMantencion.setDetalleMantencion1(this);
        return insumoMantencion;
    }

    public InsumoMantencion removeInsumoMantencion(InsumoMantencion insumoMantencion) {
        getInsumoMantencionList1().remove(insumoMantencion);
        insumoMantencion.setDetalleMantencion1(null);
        return insumoMantencion;
    }

    public Mantencion getMantencion() {
        return mantencion;
    }

    public void setMantencion(Mantencion mantencion) {
        this.mantencion = mantencion;
    }
}
